#ifndef RenderVisitor_h
#define RenderVisitor_h

#include "Visitor.h"
class Model3D;

/**
 * Classe enumerant les differents modes d'affichage de la carte
 */
class DisplayMode
{
  public:

   enum DisplayModeEnum { DEFAULT, POSSESSION };
  DisplayMode(enum DisplayModeEnum _dm=DEFAULT) : displayMode_enum(_dm) {}

   void set(enum DisplayModeEnum _dm) { displayMode_enum=_dm; }
   void toggle();

   operator enum DisplayModeEnum()
   {
      return displayMode_enum;
   }

  public:

   enum DisplayModeEnum displayMode_enum;
   
};

/**
 * Classe permettant le rendu des differents composants du jeu
 */
class RenderVisitor : virtual public Visitor 
{

  public:
   
   virtual void visit(Territoire * _territoire);
   virtual void visit(Pion * _pion);
   virtual void visit(De * _de);
   virtual void drawModel3D(Model3D * _model3D);
   void setDisplayMode(DisplayMode::DisplayModeEnum _dm) { displayMode.set(_dm); }
   void toggleDisplayMode() { displayMode.toggle(); }
   DisplayMode::DisplayModeEnum getDisplayMode() { return displayMode; }

  public:
  
   DisplayMode displayMode;
};
#endif

